﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using BE;
using BL;
using System.Data;

using Mapeo;
using System.Collections;
using AjaxControlToolkit;
using NHibernate;

using MySql.Data;
using MySql.Data.MySqlClient;
using CrystalDecisions.CrystalReports;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.ReportSource;
using CrystalDecisions.Shared;
using System.Diagnostics;
using System.Drawing;
using System.Net;
using System.IO;
//using CrystalDecisions.Windows;

namespace UI.Tesoreria
{
    public partial class frmComprobanteVentaLista : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                txtFechaApertura.Text = DateTime.Now.Date.ToString("dd/MM/yyyy");
                txtFechaCierre.Text = DateTime.Now.Date.ToString("dd/MM/yyyy");
                CargarGrilla();
            }
        }

        #region "Metodos"

        private void CargarGrilla()
        {
            LabelErrorListado.Text = "";
            try
            {
                ComprobanteVenta_BL tipo = new ComprobanteVenta_BL();
                String codigo = txtCodigoFiltro.Text.Trim();
                String nombre = txtNombreFiltro.Text.Trim();
                DateTime fechainicio = Convert.ToDateTime(txtFechaApertura.Text).Date;
                DateTime fechaFin = Convert.ToDateTime(txtFechaCierre.Text).Date;

                DataTable listado = tipo.Listado(codigo,nombre,fechainicio,fechaFin);
                GridComprobanteVentaLista.DataSource = listado;
                GridComprobanteVentaLista.DataBind();

                if (listado.Rows.Count < 1)
                {
                    throw new Exception("No se encontraron resultados");
                }
            }
            catch (Exception ex)
            {
                LabelErrorListado.Text = ex.Message.ToString();
            }


        }

        private bool GenerarReporteComprobanteVenta(String idComprobanteVenta)
        {
            LabelResultados.Text = "";
            try
            {
                ReporteComprobanteVenta reporte = new ReporteComprobanteVenta();
                ReporteComprobanteVenta_BL rcv = new ReporteComprobanteVenta_BL();

                DataTable data = rcv.ListaComprobanteVenta(idComprobanteVenta);

                if (data.Rows.Count == 0)
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('" + "No se encontraron registros :" + "" + "');", true);
                    return false;
                }

                reporte.SetDataSource(data);

                //reporte.DataDefinition.FormulaFields["Docente"].Text = "'" + nombreProfeReporte + "'";

                ExportOptions CrExportOptions;
                DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
                PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
                //String rutaarchivo = System.IO.Path.GetTempFileName() + "PreActa2014-" + Guid.NewGuid() + ".pdf";
                String rutaarchivo = "\\IMPRESIONES\\" + "PreActa2014-" + Guid.NewGuid() + ".pdf";
                
                

                CrDiskFileDestinationOptions.DiskFileName = rutaarchivo;

                Session["RutaReporte"] = rutaarchivo;
                Session["Reporte"] = reporte;


                CrExportOptions = reporte.ExportOptions;
                {
                    CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                    CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
                    CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;

                    CrExportOptions.FormatOptions = CrFormatTypeOptions;
                }

                reporte.Export();

                WebClient myWebClient = new WebClient();
                myWebClient.DownloadFile("",rutaarchivo);

                myWebClient.DownloadFile(rutaarchivo, @"D:/DESCARGAS");

                //Process.Start(rutaarchivo);

                return true;
            }
            catch (Exception ex)
            {
                LabelResultados.Text = ex.Message;
                return false;
            }
        }

        #endregion

        #region "Botones"

        protected void Button1_Click(object sender, EventArgs e)
        {
            CargarGrilla();
        }

        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            //Session["Cp"] = null;
            Session["GRABO"] = null;
            Response.Redirect("FrmComprobanteVenta.aspx");
        }
        
        #endregion

        #region "Grillla"


        private void GenerarReporteComprobanteVentaDESCARGA(String idComprobanteVenta)
        {
            LabelErrorListado.Text = "";
            try
            {
                ReporteComprobanteVenta reporte = new ReporteComprobanteVenta();
                ReporteComprobanteVenta_BL rcv = new ReporteComprobanteVenta_BL();
                DataTable data = rcv.ListaComprobanteVenta(idComprobanteVenta);

                reporte.SetDataSource(data);
                System.IO.MemoryStream rptStream = new System.IO.MemoryStream();
                rptStream = (System.IO.MemoryStream)reporte.ExportToStream(ExportFormatType.PortableDocFormat);
                Response.Clear();
                Response.Buffer = true;
                Response.ContentType = "application/pdf";
                Response.AddHeader("Content-Disposition", "attachment;filename=" + "REPORTE PE.pdf");

                Response.BinaryWrite(rptStream.ToArray());
                reporte.Close();
                Response.End();

            }
            catch (Exception ex)
            {
                LabelErrorListado.Text = ex.Message;
            }
        }


        
        #endregion                 

        protected void GridComprobanteVentaLista_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView gv = (GridView)sender;
            gv.PageIndex = e.NewPageIndex;
            GridComprobanteVentaLista.PageIndex = e.NewPageIndex;

            CargarGrilla();
        }


        protected void GridComprobanteVentaLista_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            LabelErrorListado.Text = "";
            try
            {
                if (e.CommandName.Equals("Reporte"))
                {
                    LinkButton lb = (LinkButton)e.CommandSource;
                    GridViewRow gvr = (GridViewRow)lb.NamingContainer;
                    int id = (int)GridComprobanteVentaLista.DataKeys[gvr.RowIndex].Value;

                    GenerarReporteComprobanteVentaDESCARGA(id.ToString());
                   
                }
                else if (e.CommandName.Equals("Anular"))
                {
                    LinkButton lb = (LinkButton)e.CommandSource;
                    GridViewRow gvr = (GridViewRow)lb.NamingContainer;
                    int id = (int)GridComprobanteVentaLista.DataKeys[gvr.RowIndex].Value;

                    ComprobanteVenta_BL cpventa_bl = new ComprobanteVenta_BL();
                    cpventa_bl.Anular(id, User.Identity.Name);
                    CargarGrilla();
                
                }
            }
            catch (Exception ex)
            {
                CargarGrilla();
                LabelErrorListado.Text = ex.Message;
            }
        }

        protected void GridComprobanteVentaLista_RowDataBound(object sender, GridViewRowEventArgs e)
        {


            if (e.Row.RowType == DataControlRowType.DataRow)
            {

               
                string anulado = e.Row.Cells[9].Text;



                if (anulado.Equals("ANULADO"))
                {
                    e.Row.BackColor = Color.FromName("#F37676");
                }
                

            }

        }
    }
}